import axios from 'axios' // 引入axios
import { BASE_URL } from '../config'
import { Message } from 'element-ui'
// import { config } from 'vue/types/umd'

const request = axios.create({
  baseURL: BASE_URL,
  timeout: 10000,
  headers: { 'Content-Type': 'application/json; charset=utf-8' }
}) // 设定基本信息

// 请求拦截器
request.interceptors.request.use(function (config) {
  // 定义一个函数用于从cookie中获取指定名称的cookie值
  function getCookie (name) {
    const cookieArray = document.cookie.split(';')
    for (let i = 0; i < cookieArray.length; i++) {
      const cookie = cookieArray[i].trim()
      if (cookie.startsWith(name + '=')) {
        // 替换掉 '%'，然后解码为普通字符串
        return decodeURIComponent(cookie.substring(name.length + 1).replace(/%/g, ' ').replace('20', '')) // 使用replace去掉'20'
      }
    }
    return null // 如果未找到指定的cookie，则返回null
  }
  const token = getCookie('token')
  // console.log(token)

  // 判断token存在再做配置
  if (token) {
    // 注意：token前边有 'Bearer ' 的信息前缀,API接口需求，
    // Bearer后边有空格，如果token还是获取不到，尝试去掉前边的'Bearer'字符串
    config.headers.Authorization = token
  }
  return config
}, function (error) {
  return Promise.reject(error)
})

// 响应拦截器
request.interceptors.response.use(
  config => {
    if (config.status === 200) { // 如果返回的数据是200，则登录成功，并且将返回的数据简化
      // console.log('白名单')

      return config.data
    }
  },
  err => { // 这里用于收集请求返回的错误信息
    console.log(err.message)
    const { message } = err
    if (message.include('timeout')) return Message.error('请求超时，请稍后提交')
    if (message === 'Netword Error') return Message.error('网路错误，稍后再次尝试')
  }
)

export default request // 导出
